package com.example.auth.utils;

import com.google.common.collect.Lists;
import org.springframework.beans.BeanUtils;

import java.util.List;

/**
 * @description: bean util
 * @author: xijie.wang
 */
public class ClassUtil {

	/**
	 * 属性拷贝，并返回新对象
	 *
	 * @param target 目标对象
	 * @param source 原对象
	 * @return P
	 */
	public static <P, T> P copyProperties(Class<P> target, T source) {
		P p = BeanUtils.instantiateClass(target);
		BeanUtils.copyProperties(source, p);
		return p;
	}

	/**
	 * 拷贝list
	 *
	 * @param source 原对象
	 * @param target 目标对象
	 * @param <F>
	 * @param <T>
	 * @return
	 */
	public static <T, F> List<T> copyList(List<F> source, Class<T> target) {
		return Lists.transform(source, t -> copyProperties(target, t));
	}


}
